package org.aliwo.state;

/**
 * @author xuyayuan
 * @data 2021年06月18日
 * public enum State {
 *      NEW,  尚未启动的线程，处于此状态
 *      RUNNABLE, 在Java虚拟机中执行的线程处于此状态
 *      RUNNABLE 状态中包含 就绪状态(Ready) 和 运行状态(Running) 只有线程获取到时间片之后才到达运行状态，
 *      BLOCKED, 被阻塞等待监视器锁定的线程处于此状态
 *      WAITING, 正在等待另一个线程执行特定的动作的线程处于此状态
 *      TIMED_WAITING, 正在等待另一个线程执行动作到达指定等待时间的线程处于此状态
 *      TERMINATED; 已退出的线程处于此状态
 *
 */
public class ThreadState {
    public static void main(String[] args) throws InterruptedException {
        State01 s = new State01();
        System.out.println(s.getName() + " 状态 : " + s.getState() + "====");
        s.start();
        while (Thread.State.TERMINATED != s.getState()) {
            System.out.println(s.getName() + " 状态 : " + s.getState());
            Thread.sleep(500);
        }
        System.out.println(s.getName() + " 状态 : " + s.getState());
    }
}

class State01 extends Thread {
    @Override
    public void run() {
        while (true) {
            for (int i = 1; i <= 10; i++) {
                System.out.println("hi " + i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            break;
        }
    }
}
